package top.rainbowecho.model.percona;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * <p>
 * 用户表
 * </p>
 *
 * @author 杨健
 * @since 2020-05-10
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("tb_users")
public class Users implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 自动生成用户id
     */
    @TableId("id")
    private String id;

    /**
     * 可根据出生年份计算
     */
    @TableField("age")
    private Integer age;

    /**
     * 最长11位
     */
    @TableField("phone")
    private String phone;

    /**
     * 注册时间，长度为4
     */
    @TableField("register_time")
    private LocalDateTime registerTime;

    /**
     * 用户头像图片url，如果用户是第三方登录，那么此头像URL将来源于第三方
     */
    @TableField("avatar")
    private String avatar;

    /**
     * 用户名，长度限制在20个英文字符或10个中文字符
     */
    @TableField("user_name")
    private String userName;

    /**
     * 用户登录ip，点分十进制格式
     */
    @TableField("ip")
    private String ip;

    /**
     * 用户邮箱，限制在20个字符内
     */
    @TableField("email")
    private String email;

    /**
     * 用户状态，1为启用，0为不启用
     */
    @TableField("enable")
    private Integer enable;

    /**
     * 用户性别，1位男性，0位女性，-1为保密
     */
    @TableField("gender")
    private Integer gender;

    /**
     * 加盐加密后的用户密码
     */
    @TableField("password")
    private String password;

    /**
     * 出生日期
     */
    @TableField("birthday")
    private LocalDate birthday;

    /**
     * 第三方应用的openId
     */
    @TableField("open_id")
    private String openId;

    /**
     * 第三方应用ID
     */
    @TableField("provider_id")
    private String providerId;

    /**
     * 第三方用户的profile头像的URL，用于微博类应用
     */
    @TableField("profile_url")
    private String profileUrl;

    /**
     * 逻辑删除标志位，0表示未删除，1表示删除
     */
    @TableField("deleted")
    private Boolean deleted;

    /**
     * 真实姓名
     */
    @TableField("real_name")
    private String realName;

    /**
     * 邮箱验证后设置，1表示邮箱有效，0表示无效
     */
    @TableField("valid_mail")
    private Boolean validMail;

    /**
     * 电话号码验证后设置，1表示电话有效，0表示无效
     */
    @TableField("valid_phone")
    private Boolean validPhone;

}
